Regiuni critice
O constructie clasica utilizata pentru implementarea excluderii mutuale este "regiunea critica", propusa de catre Dijkstra.
Unei regiuni critice ii sint asociate un set de declaratii si o variabila, comune tuturor proceselor ce doresc sa utilizeze resursa. Toate regiunile critice referitoare la aceeasi variabila comuna se executa prin excludere mutuala.
Proprietatile regiunii critice sint urmatoarele:
a)cel mult un proces executa declaratiile asociate regiunii critice;
b)un proces care doreste sa execute declaratiile asociate regiunii critice va dobindi acest drept intr un timp finit;
c)un proces care doreste sa execute declaratiile unei regiuni critice o face intr un timp finit.
Operatiile ce trebuie efectuate cind un proces doreste sa execute o regiune critica sint simple. In primul rind se testeaza valoarea unei anumite variabile pentru a se determina daca regiunea in discutie este executata de catre un alt proces (caz in care variabila are valoarea 1). Apoi variabila se inscrie cu 1 pentru a indica "regiunea ocupata". (Daca regiunea era gasita ca ocupata, inscrierea cu 1 a variabilei nu are efecte nocive.) Urmeaza executia regiunii, care trebuie sa se termine intr un timp finit. La iesirea din regiunea critica procesul reseteaza valoarea variabilei comune asociate regiunii critice, fapt ce permite ca alte procese sa obtina, eventual, accesul la regiune. Desi nu se face nici un fel de ipoteza asupra comportarii proceselor care asteapta, criteriul (4) anterior mentionat sugereaza ca procesele in asteptare vor fi blocate pe durata cit regiunea este ocupata si activate la eliberarea ei. Cum numarul de procese care asteapta poate fi mai mare decit unu, este necesara o politica de planificare. Totusi, trebuie subliniat ca notiunea de regiune critica nu include un algoritm anumit de stabilire a prioritatilor, dar, daca acesta exista, el trebuie facut "nepartinitor", pentru ca timpul de asteptare al fiecarui proces sa fie finit.

Mecanismul test and set.
o regiune critica include alte regiuni critice, mai putin extinse. testarea variabilei comune asociate unei regiuni critice se face prin excludere mutuala, deci si ea constituie o regiune critica.
Privita la cel mai coborit nivel, problema de rezolvat este cea care permite implementarea unor regiuni critice de mai mare complexitate cu ajutorul actualizarii prin excludere mutuala a unei singure variabile. Pot aparea probleme, deoarece este posibila comutarea unui proces pe durata secventei de actualizare a variabilei. In conditii de pseudoparalelism cauza comutarii este aparitia unei intreruperi, singurul eveniment capabil de a produce un salt neprevazut (asincron) la o alta rutina.
In sistemele cu microprocesor unic actualizarea prin excludere mutuala se poate implementa prin neacceptarea de intreruperi pe durata acestei operatii.
O alta posibila sursa de probleme este datorata prezentei procesoarelor destinate accesului direct la memorie (DMA), intrucit ciclurile lor de acces la memorie se pot intercala cu ciclurile masina destinate executiei unei instructiuni, deci DMA se poate efectua inainte de terminarea executiei instructiunii curente. Este motivul pentru care executia instructiunii test and set dezactiveaza in mod automat posibilitatea executarii de transfer DMA. Oricum, acesta nu indica probleme insurmontabile: de regula, prin DMA se efectueaza transferuri in conjunctie cu perifericele de mare viteza, deci se poate aranja ca variabilele asociate zonelor critice sa nu se afle in zona de memorie alocata tampoanelor folosite in mecanismele DMA.

Functia test and set in structuri multiprocesor
Structurile multiprocesor cu magistrala comuna pot prezenta probleme mai complexe.Folosirea in comun a magistralei se face conform unei anumite strategii de arbitrare in cazul concurentei intre procesoare, care permite alocarea magistralei doar unuia din solicitanti. Deci, insasi magistrala constituie o regiune critica, fiind utilizabila, la un moment anumit, doar de un singur microprocesor. Accesul la magistrala este acordat printr un mecanism concentrat sau distribuit de arbitrare, care informeaza solicitantul asupra posibilitatii de utilizare a magistralei de indata ce actualul utilizator o elibereaza.
In general, toate magistralele multiprocesor contin o linie a carei stare este determinata de interfata utilizatorului curent al magistralei, indicind daca aceasta este sau nu ocupata. De regula magistrala ramine in posesia unui utilizator pentru timpul necesar efectuarii unui singur ciclu de acces la memorie, dupa care este eliberata. O astfel de tehnica de atribuire a magistralei poate conduce la erori chiar in conditiile existentei instructiunii tas, a carei executie necesita doua cicluri de acces la memorie pentru completare: unul de citire, care copiaza X in A, si un al doilea de inscriere, care inscrie cu1 variabila X.
Solutia: evitarea intercalarii ciclurilor de acces la memorie pe magistrala comuna pe durata executiei operatiilor critice. In acest sens magistrala este pastrata in starea "ocupat" din momentul citirii lui X pina la cel al terminarii inscrierii sale cu 1. (fig. 3.7.)
Intrucit ciclurile citire modificare inscriere difera de ciclurile normale pe magistrala, interfata cu magistrala trebuie sa cunoasca daca operatia solicitata de catre microprocesorul local este una normala sau nu. Informatia respectiva poate fi furnizata de insusi microprocesor, printr o linie a sa speciala, sau printr o combinatie a semnalelor de stare, care indica efectuarea unei operatii read modify write. Aceasta conditie speciala poate fi asociata cu o anume instructiune, a carei executie produce activarea semnalului, sau se poate conecta cu o secventa de instructiuni, pentru care un indicator special
codul operatiei cauzeaza activarea unui cod special de semnalizare a unei operatii indivizibile in cicluri individuale. Pentru microprocesoarele care nu dispun de facilitatile de mai inainte problema se rezolva prin incadrarea instructiunii cu executie indivizibila intre alte doua instructiuni; prima inscrie, iar cea de a doua sterge un indicator al interfetei care permite pastrarea controlului asupra magistralei pe durata de executie a instructiunii ce nu se poate fragmenta. Desigur, metoda conduce la cresterea ineficientei de ansamblu in utilizarea magistralei.  

Regiuni critice conditionate
Baza de date asociata unei regiuni critice este modificata in sensul generarii unei liste de descriptori ai proceselor asteptind accesul in regiunea critica, lista ordonata conform unei anumite scheme de prioritati. La eliberarea regiunii se selecteaza primmul element al listei (in cazul in care aceasta nu este vida) si el este transferat planificatorului CPU. Procesul isi poate continua executia, intrucit regiunea este libera. Celelalte procese inscrise in lista trebuie sa astepte in continuare. In consecinta, CPU nu este fortata sa execute buclele de asteptare descrise anterior, iar accesul la regiunea critica este reglat de un algoritm explicit de planificare, selectat conform cerintelor programatorului.
Si aceasta implementare contine fenomene busy waiting si process starvation, deoarece introducerea si extragerea in lista de descriptori ai proceselor sint, la rindul lor, regiuni critice. Fenomenele mentionate pot fi tolerate pentru aceste regiuni mici, deoarece timpii scurti de executie nu conduc la intirzieri si asteptari prea mari. Pentru regiuni mai vaste sint necesari algoritmi dedicati de planificare.